home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / PAS_0693 / TBUTIL.PAS < prev    next >
Pascal/Delphi Source File  |  1993-06-30  |  2KB  |  63 lines

  1. {─ Fido Pascal Conference ────────────────────────────────────────────── PASCAL ─
  2. Msg  : 42 of 92
  3. From : Bryce Ostenson                      1:282/4028.0         13 Jun 93  15:28
  4. To   : Bradley Wayth
  5. Subj : Disabling The Ctrl-Alt-D
  6. ────────────────────────────────────────────────────────────────────────────────
  7. BW>    I am looking for a way to diable the use of the
  8. BW> control break and control
  9. BW> alt delete features. Would anyone have some code to do
  10. BW> this in QuickPascal.}
  11.  
  12. UNIT TBUtil; { Tool box of nifty utilities}
  13.  
  14.                                 INTERFACE
  15.  
  16. Uses
  17.         Dos;
  18.  
  19. Var
  20.         SavedInt23 : Pointer;
  21.         CBreak : Boolean;
  22.  
  23. Procedure SetCtrlBreak(Status : Boolean);
  24. Function GetCtrlBreak : Boolean;
  25.  
  26. {I cut out a couple procedures and functions}
  27.  
  28.                                 IMPLMENTATION
  29.  
  30. Procedure CBreakHandler; INTERRUPT;  Begin End;
  31.  
  32. Procedure SetCtrlBreak(Status : Boolean);
  33.  
  34. Begin
  35.         If Status then
  36.                 SetIntVec($23, SavedInt23);
  37.         Else
  38.                 SetIntVec($23, @CBreakHandler);
  39.         CBreak := Status;
  40. End;
  41.  
  42. Function GetCtrlBreak : Boolean;
  43.  
  44. Begin
  45.         GetCtrlBreak := CBreak;
  46. End;
  47.  
  48. Begin { Unit Initalization }
  49.         CBreak := True;
  50.         GetIntVec($23,SavedInt23); { Save the Ctrl-Break handler. }
  51. End.
  52.  
  53. There you go, although the same idea cannot be applied to int 19h (the
  54. reboot interrupt).  At least when I tried, it didn't work...
  55.  
  56. BTW: Simple concept...  Here's how it works - When the program begins,
  57. SavedInt23 is assigned to the original C-Break interrupt...  When the
  58. SetCtrlBreak procedure is called with Status equaling false, the C-Break
  59. interrupt is assigned to a CBreakHandler which has no substance...  Thus
  60. when C-Break is called it does nothing.  When SetCtrlBreak is called
  61. with Status equaling false, Interrupt 23h is assigned to the default
  62. C-Break handler.  Sorry, this wasn't a good synopsis, but it works.
  63.